package dnaDAO.Doenca;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import dnaModel.Doenca;
import dnaUtils.JdbcConnection;

public class DoencaDAO implements IDoencaDAO {

	private static IDoencaDAO doencaDao = null;
	public static IDoencaDAO getInstance(){
		
		if(doencaDao == null)
			doencaDao = new DoencaDAO();
		
		return doencaDao;
	}
	
	public Doenca obter(long id) throws SQLException {
		Connection conexao = JdbcConnection.getInstance().createConnection();		
		PreparedStatement sql = conexao.prepareStatement("select * from doenca where id = ?");
		sql.setLong(1, id);
		
		ResultSet resultado = sql.executeQuery();	 
		Doenca retorno = null;
		if(resultado.next()) {
			retorno = new Doenca();
			retorno.setId(resultado.getLong("id"));
			retorno.setNome(resultado.getString("nome"));
		}
		
		JdbcConnection.getInstance().closeConnection(conexao);
		
		return retorno;
	}
	
	public ArrayList<Doenca> listar() throws SQLException {
		Connection conexao = JdbcConnection.getInstance().createConnection();		
		PreparedStatement sql = conexao.prepareStatement("select * from doenca");
		
		ResultSet resultado = sql.executeQuery();	 
		ArrayList<Doenca> retorno = new ArrayList<Doenca>();
		while(resultado.next()){
			Doenca doenca = new Doenca();
			doenca.setId(resultado.getLong("id"));
			doenca.setNome(resultado.getString("nome"));
			retorno.add(doenca);
		}
		
		JdbcConnection.getInstance().closeConnection(conexao);
		
		return retorno;
	}
	
	public ArrayList<Doenca> listarDoencasSemPesq() throws SQLException {	
		Connection conexao = JdbcConnection.getInstance().createConnection();		
		PreparedStatement sql = conexao.prepareStatement("select * from doenca d where d.id not in (select d2.id from doenca d2 inner join pesquisa p on d2.id = p.doencaId)");
		ResultSet rs = sql.executeQuery();	 
		ArrayList<Doenca> doencas = new ArrayList<Doenca>();
		while(rs.next()){
			Doenca doenca = new Doenca();
			doenca.setId(rs.getLong("id"));
			doenca.setNome(rs.getString("nome"));
			doencas.add(doenca);
		}
		JdbcConnection.getInstance().closeConnection(conexao);		
		return doencas;
	}

	@Override
	public void criar(Doenca origem) throws SQLException {
		// TODO Auto-generated method stub
	}

	@Override
	public void alterar(Doenca origem) throws SQLException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void excluir(long id) throws SQLException {
		// TODO Auto-generated method stub
		
	}
}
